{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "v3ku5HNpXiSK"
   },
   "source": [
    "### News"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KT9S7F4mXiSM"
   },
   "source": [
    "Placeholder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "h08vTNxRXiSM"
   },
   "source": [
    "### Installation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "executionInfo": {
     "elapsed": 21307,
     "status": "ok",
     "timestamp": 1742164451233,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "jBcklMgcXiSM"
   },
   "outputs": [],
   "source": [
    "# Placeholder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "O_HFQBPSXiSN"
   },
   "source": [
    "### Unsloth"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "### Tool Calling\n",
    "\n",
    "<img src=\"\" alt=\"image.png\">\n",
    "\n",
    "Image from [How Function Calling Works](https://huggingface.co/docs/hugs/en/guides/function-calling)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "By definition, Tool Calling refers to the capability of models to interact with external tools. As you may already know, LLMs are excellent at generating text in the manner of question-and-answer pairs, chat-like conversation messages, and others. When provided useful context, LLMs are good at responding to prompts that can be used as actionable command parameters that another system would handle. This could be a search engine, calculators, company APIs, spreadsheets, or SQL queries. These systems when interacted with are usually done in a single command line or if more complex a runnable scripting language such as Bash or Python. The painful part is how to sequence these commands and assign the correct parameter names and values. What if we would just prompt the LLM to do these for us? For example. \"Schedule an appointment for Alice with Bob Monday, 10:00am Eastern time\"\n",
    "\n",
    "For this notebook, we'll use a smaller Qwen2.5 model 1.5B. We will guide you on how to prompt a model to respond in JSON format so we can then parse the results and pass those arguments to a Python script. The intuition for using a small model is that we do not want the model to use its pretraining data for the responses when calculating the vector sum. Smaller models have less stored knowledge and it would be possible that our prompt is not on the training data.\n",
    "\n",
    "Our intention is to provide a simple framework for integrating tool calling into your fine-tuning workflow for unsloth. Let us know how we can help you further."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 448,
     "referenced_widgets": [
      "10c7f59dc0864aa59b754f0234514f1e",
      "063541a0053545bea8f2e876fd2acb68",
      "92dc9145ab524f498bfc0c35f9fdb174",
      "11ca17ec35074f318bc144a9227478ac",
      "ea1e5a33362a43db8766cb0c08b578dd",
      "09d55268e88d4dc288a001427f61a4fd",
      "806dac7b48c0492396d0e967c65d8c71",
      "7eb5ea11b3c84889995392a4a34e273b",
      "c11547368c9a4e81bf787800d355d7f4",
      "5ebe13f6cae44361aed89ea22530cc87",
      "6fd5a120e3ed475ebb764bd55a45d8ec",
      "2dcc9afb45354f89b5930e740d889a7d",
      "e3659031c23d4bcb8136899c476e1a6c",
      "e1a8bf02391b48efa942016ec7bebc6d",
      "8f5bd8b322054dddb9d394e452544762",
      "f2ae3349b890487abee3a557b186294e",
      "6091d60224314261a301664d0362822a",
      "5701898928264a458c89f2c8a080e83a",
      "10a81cd2eab6441a872147db79f7ef1d",
      "3671f2e22aac43edadd1240a1e1deeea",
      "e3523f3c07f64fc88dacd72ac2ca1d3b",
      "ed299eeae37b44afa7f2c605a93199e4",
      "ab92d2ba313e4e1097f6bc302fb98409",
      "926ae2d61c204b0c8b9b6e3a4a90926b",
      "cda22ce77643405596be676b2eb35c80",
      "c9195c4996084510ac2baeffc3958673",
      "e718ccda074f49e1a488d71fd5c8f71c",
      "0e74b5680f5e4e5787bdb5e88984b74e",
      "2a01d4ad5c8441baa8357117a9bada43",
      "e72ddbfb5d9b4b86830a77498594da7c",
      "fad3f711763a45efa87750a5a978395f",
      "bedc55a741994190afdde78a0b6952ce",
      "790165ff4f0046448b17bd3505cbc416",
      "61fcb0f1cdd84a15a996cf6faaa0dc11",
      "c0be1d43b3f446b98c32951e3d2bebe6",
      "8a5cdb013ac046199d532fbaf286b577",
      "33d943034caf4ad98387b9116ceec2b5",
      "7223c1ddd12240eda1aa0d94120c7cbb",
      "b56b2851286c47e09cd032bad6f697cf",
      "cd5e8b1e84c74e0e959bffb5c75abf50",
      "1de87285321f4f01bc8bf86e3b0f86a5",
      "cc126f714dd0422fadec2262b9818560",
      "66d521d8e65e4f5285f89daaf7c8c38b",
      "103932911c4d409b8d801f9343affab9",
      "b4aa6dc09c4147bab29f7ace05579fe4",
      "768be9bccefb4359bc21c0731e534399",
      "fefd0ef6800c4a8aa57e22d3681fa324",
      "754e6537ebc3499499a68fbb5b25df53",
      "2483117f317a44d0b4eecb4a4e4f62aa",
      "fa6a56bbe82f412d8eff4968cddff88e",
      "cfb8e59c6bdd4e84b24507aa86db8eed",
      "49eb1b29c8064d3baf42e78cd9305b73",
      "f73f20e93f8a4763bd105d3dc8f61daf",
      "40ef2bc30330404b89c337510d560b5b",
      "a8f68b32207f43898a735122fb1e1026",
      "bd19725aa20d42d399f029caad53aa01",
      "9841a7ca0ec74e61b6c9654e2774f955",
      "657fa8603e7e4e23b30ea3fbe3b66bcd",
      "14cce34c29324f2abb209aa31251d414",
      "837b744b041b48949cf2fb0e53ccf931",
      "32be1aba98784b208667179dd5862de2",
      "e8ab843c82c34379b3f7c0edf8fa98ba",
      "e640358764354406b64ea9d8cd62b97c",
      "c895eb1145aa41e2b0dc4e7862c8e1ad",
      "3c1922834e5b420bbe3d8f7d2429b492",
      "0accca7a631d42b8a95b7dcad70d14b8",
      "ee6aa8e7f0ce4a31981d8e7f751a8c03",
      "34852aab3a4441b88dd65be909a7673b",
      "be0a1fb6e452464fbca63cba9a005b2b",
      "a9222c840014441d9199ddf2b7650d08",
      "e6ebb4fdfb2c43a5a3e7df423112cd46",
      "8a55ef8aed5144dbb02dfc99e5bd43ba",
      "fc9ad241d66b4cb380183a04fc2e6c2f",
      "4b481b20fe98408e97377eb6efea26f4",
      "f13f684bf6224980830986ed0a81e85a",
      "3321d3cd97f942b38125b98226a72899",
      "e9b5c45236e94e3480dd6dbbb3d6fcf2",
      "c109cfd6be8c428993f7089a6c2a94df",
      "b1f0cbd2181141d1a33948740a18a917",
      "c2a1021f9a8e473ba170c943a003dc84",
      "b8d3126b7d9d4a9a80c40789d9f68446",
      "3b9cbaf2c1044450b41dab928d7c27da",
      "79b9bffeb1fb44abae641493395ddfd1",
      "0dd25d69dee74fd58dd979cca5d3e587",
      "a3f10cdeab64466c86de3470279b5fbd",
      "d9288dbb67ca47d29fe3d188e11ca3d0",
      "a5b61a1d115d4a9db489042bedbec8f9",
      "90dd6bb65f444300b184c720a6e1b339",
      "89a8ed76a8df4e87a1659b6adfb0d458",
      "a442f35c4641456ba3b3b3c4fbee8995",
      "a1604bdde1b34bbfb6ff7c12cb6c6e58",
      "5d880920945845578a03b0216241ecb9",
      "4d3b101d7b1a492bb1f2e0c1f94f7674",
      "e545856974b842b3ad9d76508a9e9fcd",
      "4a8f7ce47d0f4071831027affdb22bfa",
      "69bbbbee4ca24dfa98cb2fd7aaded0d4",
      "c02c11128bed4f3bb57f3d185df12ebf",
      "c2f5d7804bce46af81dad2129baf5a01",
      "eff94aaebf5e45479fabd5b11c156291"
     ]
    },
    "executionInfo": {
     "elapsed": 81172,
     "status": "ok",
     "timestamp": 1742164795340,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "2jfx5fOpXiSN",
    "outputId": "2b97d305-aee4-49bd-dbc4-372932e820d4"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "🦥 Unsloth: Will patch your computer to enable 2x faster free finetuning.\n",
      "🦥 Unsloth Zoo will now patch everything to make training faster!\n",
      "==((====))==  Unsloth 2025.3.10: Fast Qwen2 patching. Transformers: 4.47.1.\n",
      "   \\\\   /|    Tesla T4. Num GPUs = 1. Max memory: 14.741 GB. Platform: Linux.\n",
      "O^O/ \\_/ \\    Torch: 2.5.1+cu124. CUDA: 7.5. CUDA Toolkit: 12.4. Triton: 3.1.0\n",
      "\\        /    Bfloat16 = FALSE. FA [Xformers = 0.0.29.post1. FA2 = False]\n",
      " \"-____-\"     Free license: http://github.com/unslothai/unsloth\n",
      "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "10c7f59dc0864aa59b754f0234514f1e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "config.json:   0%|          | 0.00/765 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2dcc9afb45354f89b5930e740d889a7d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "model.safetensors:   0%|          | 0.00/3.09G [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ab92d2ba313e4e1097f6bc302fb98409",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "generation_config.json:   0%|          | 0.00/265 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "61fcb0f1cdd84a15a996cf6faaa0dc11",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer_config.json:   0%|          | 0.00/7.51k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b4aa6dc09c4147bab29f7ace05579fe4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "vocab.json:   0%|          | 0.00/2.78M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bd19725aa20d42d399f029caad53aa01",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "merges.txt:   0%|          | 0.00/1.67M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ee6aa8e7f0ce4a31981d8e7f751a8c03",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "added_tokens.json:   0%|          | 0.00/632 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c109cfd6be8c428993f7089a6c2a94df",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "special_tokens_map.json:   0%|          | 0.00/613 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "89a8ed76a8df4e87a1659b6adfb0d458",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer.json:   0%|          | 0.00/7.03M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from unsloth import FastQwen2Model\n",
    "import torch\n",
    "\n",
    "max_seq_length = 2048  # Choose any! We auto support RoPE Scaling internally!\n",
    "dtype = None  # None for auto detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+\n",
    "load_in_4bit = True  # Use 4bit quantization to reduce memory usage. Can be False.\n",
    "\n",
    "# 4bit pre quantized models we support for 4x faster downloading + no OOMs.\n",
    "fourbit_models = [\n",
    "    \"unsloth/Meta-Llama-3.1-8B-bnb-4bit\",  # Llama-3.1 2x faster\n",
    "    \"unsloth/Meta-Llama-3.1-70B-bnb-4bit\",\n",
    "    \"unsloth/Mistral-Small-Instruct-2409\",  # Mistral 22b 2x faster!\n",
    "    \"unsloth/mistral-7b-instruct-v0.3-bnb-4bit\",\n",
    "    \"unsloth/Phi-3.5-mini-instruct\",  # Phi-3.5 2x faster!\n",
    "    \"unsloth/Phi-3-medium-4k-instruct\",\n",
    "    \"unsloth/gemma-2-27b-bnb-4bit\",  # Gemma 2x faster!\n",
    "\n",
    "    \"unsloth/Llama-3.2-1B-bnb-4bit\",  # NEW! Llama 3.2 models\n",
    "    \"unsloth/Llama-3.2-1B-Instruct-bnb-4bit\",\n",
    "    \"unsloth/Llama-3.2-3B-Instruct-bnb-4bit\",\n",
    "]  # More models at https://huggingface.co/unsloth\n",
    "\n",
    "qwen_models = [\n",
    "    \"unsloth/Qwen2.5-Coder-32B-Instruct\",  # Qwen 2.5 Coder 2x faster\n",
    "    \"unsloth/Qwen2.5-Coder-7B\",\n",
    "    \"unsloth/Qwen2.5-14B-Instruct\",  # 14B fits in a 16GB card\n",
    "    \"unsloth/Qwen2.5-7B\",\n",
    "    \"unsloth/Qwen2.5-72B-Instruct\",  # 72B fits in a 48GB card\n",
    "]  # More models at https://huggingface.co/unsloth\n",
    "\n",
    "model, tokenizer = FastQwen2Model.from_pretrained(\n",
    "    model_name=\"unsloth/Qwen2.5-Coder-1.5B-Instruct\",\n",
    "    max_seq_length=None,\n",
    "    dtype=None,\n",
    "    load_in_4bit=False,\n",
    "    fix_tokenizer=False\n",
    "    # token = \"hf_...\", # use one if using gated models like meta-llama/Llama-2-7b-hf\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "executionInfo": {
     "elapsed": 816,
     "status": "ok",
     "timestamp": 1742164796157,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "tocysGVwoxbu"
   },
   "outputs": [],
   "source": [
    "# save a copy because apply_chat_template() has in-place modifications\n",
    "import copy\n",
    "\n",
    "tokenizer_orig = copy.deepcopy(tokenizer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "m64sv66VHfam"
   },
   "source": [
    "### Tool Definitions\n",
    "This is a list of all the functions that we would provide to the model. The standard format is from OpenAI's [Function Calling Definition](https://platform.openai.com/docs/guides/function-calling?api-mode=chat#defining-functions)\n",
    "It is highly possible that the model trained for tool calling was in the OpenAI standard format.\n",
    "\n",
    "Below is an example of two function definitions. The function definitions of `get_vector_sum` and `get_dot_product` will then be added to the prompt as a context for our prompt:\n",
    "\n",
    "> Find the sum of a = [1, -1, 2] and b = [3, 0, -4].\n",
    "\n",
    "We can just provide the correct one: `get_vector_sum` but to experiment if the model can identify the correct function to call, we will provide both."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "executionInfo": {
     "elapsed": 11,
     "status": "ok",
     "timestamp": 1742164796171,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "v6MoZMRQa9jI"
   },
   "outputs": [],
   "source": [
    "def get_tool_definition_list():\n",
    "    return [\n",
    "        {\n",
    "            \"type\": \"function\",\n",
    "            \"function\": {\n",
    "                \"name\": \"get_vector_sum\",\n",
    "                \"description\": \"Get the sum of two vectors\",\n",
    "                \"parameters\": {\n",
    "                    \"type\": \"object\",\n",
    "                    \"properties\": {\n",
    "                        \"a\": {\"type\": \"list\", \"description\": \"First vector\"},\n",
    "                        \"b\": {\"type\": \"list\", \"description\": \"Second vector\"}\n",
    "                    },\n",
    "                    \"required\": [\"a\", \"b\"]\n",
    "                }\n",
    "            }\n",
    "        },\n",
    "        {\n",
    "            \"type\": \"function\",\n",
    "            \"function\": {\n",
    "                \"name\": \"get_dot_product\",\n",
    "                \"description\": \"Get the dot product of two vectors\",\n",
    "                \"parameters\": {\n",
    "                    \"type\": \"object\",\n",
    "                    \"properties\": {\n",
    "                        \"a\": {\"type\": \"list\", \"description\": \"First vector\"},\n",
    "                        \"b\": {\"type\": \"list\", \"description\": \"Second vector\"}\n",
    "                    },\n",
    "                    \"required\": [\"a\", \"b\"]\n",
    "                }\n",
    "            }\n",
    "        },\n",
    "\n",
    "    ]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "jE57KGSLNfnc"
   },
   "source": [
    "Below is the user prompt declaration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "executionInfo": {
     "elapsed": 47,
     "status": "ok",
     "timestamp": 1742164796219,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "23p0W2pPdaZY"
   },
   "outputs": [],
   "source": [
    "user_query = {\n",
    "    \"role\": \"user\",\n",
    "    \"content\": \"Find the sum of a = [1, -1, 2] and b = [3, 0, -4].\"\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YEjwPmJyNfnd"
   },
   "source": [
    "### Python Code\n",
    "Below is the actual code for the function, you may notice that it has Python docstrings. This is because `apply_chat_template()` can accept and translate functions into OpenAI function definitions that are PEP 257 compliant."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "executionInfo": {
     "elapsed": 2,
     "status": "ok",
     "timestamp": 1742164796220,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "GBq-wmhRNfnd"
   },
   "outputs": [],
   "source": [
    "def get_vector_sum(a: list[float], b: list[float]) -> list[float]:\n",
    "    \"\"\"\n",
    "    Performs element-wise addition of two numerical vectors.\n",
    "\n",
    "    Both vectors must be of the same length and contain numerical values.\n",
    "\n",
    "    Args:\n",
    "        a: First vector containing numerical values\n",
    "        b: Second vector containing numerical values\n",
    "\n",
    "    Returns:\n",
    "        Resulting vector where each element is the sum of corresponding elements in a and b\n",
    "\n",
    "    Raises:\n",
    "        ValueError: If vectors have different lengths\n",
    "\n",
    "    Example:\n",
    "        >>> get_vector_sum([1, 2], [3, 4])\n",
    "        [4, 6]\n",
    "    \"\"\"\n",
    "    if len(a) != len(b):\n",
    "        raise ValueError(\"Vectors must be of the same length\")\n",
    "\n",
    "    return [x + y for x, y in zip(a, b)]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EXH4AAlcNfnd"
   },
   "source": [
    "Now let's prompt the model to provide us the arguments in JSON format. You may notice that we passed the actual function `get_vector_sum()` to the `tool` parameter and not the `get_tool_definition_list()`, You may try to change it from `tools=[get_vector_sum],` to `tools=[get_tool_definition_list()` to see if it works with the function definitions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-15T00:12:54.604054Z",
     "start_time": "2025-03-15T00:12:53.440302Z"
    },
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 599,
     "status": "ok",
     "timestamp": 1742164796826,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "ZFRTAly3LfFf",
    "outputId": "c81b7262-5a6d-4e15-8ac3-508c3e0ec3b0"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.\n",
      "\n",
      "# Tools\n",
      "\n",
      "You may call one or more functions to assist with the user query.\n",
      "\n",
      "You are provided with function signatures within <tools></tools> XML tags:\n",
      "<tools>\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"get_vector_sum\", \"description\": \"Performs element-wise addition of two numerical vectors.\\n\\nBoth vectors must be of the same length and contain numerical values.\", \"parameters\": {\"type\": \"object\", \"properties\": {\"a\": {\"type\": \"array\", \"items\": {\"type\": \"number\"}, \"description\": \"First vector containing numerical values\"}, \"b\": {\"type\": \"array\", \"items\": {\"type\": \"number\"}, \"description\": \"Second vector containing numerical values\"}}, \"required\": [\"a\", \"b\"]}, \"return\": {\"type\": \"array\", \"items\": {\"type\": \"number\"}, \"description\": \"Resulting vector where each element is the sum of corresponding elements in a and b\"}}}\n",
      "</tools>\n",
      "\n",
      "For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n",
      "<tool_call>\n",
      "{\"name\": <function-name>, \"arguments\": <args-json-object>}\n",
      "</tool_call><|im_end|>\n",
      "<|im_start|>user\n",
      "Find the sum of a = [1, -1, 2] and b = [3, 0, -4].<|im_end|>\n",
      "<|im_start|>assistant\n",
      "\n"
     ]
    }
   ],
   "source": [
    "messages = []\n",
    "\n",
    "messages.append(user_query)\n",
    "\n",
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "input_ids = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    tokenize=True,\n",
    "    add_generation_prompt=True,\n",
    "    add_special_tokens=False,\n",
    "    padding=True,\n",
    "    tools=[get_vector_sum],\n",
    "    return_tensors=\"pt\",\n",
    ").to(\"cuda\")\n",
    "\n",
    "print(tokenizer.decode(input_ids[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MwY97s7jNfnd"
   },
   "source": [
    "Below is where we call the unsloth function `generate_with_grammar()`. This function uses Grammar-Constrained Decoding. Meaning it will only respond in JSON. It uses a library fork of [transformers-CFG](https://github.com/Saibo-creator/transformers-CFG) by [Saibo-creator](https://github.com/Saibo-creator) the output is very similar to the llama-cpp-python output. We decided to use this library so that our code would be portable to `llama-cpp-python` later during production.\n",
    "\n",
    "If successful, the model should output a single valid JSON response with the following result:\n",
    "```\n",
    "[\n",
    "    {\n",
    "        \"name\": \"get_vector_sum\",\n",
    "        \"arguments\": {\n",
    "            \"a\": [1, -1, 2],\n",
    "            \"b\": [3, 0, -4]\n",
    "        }\n",
    "    }\n",
    "]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#@title Function for Generation Constraint { display-mode: \"form\" }\n",
    "\n",
    "from functools import partial\n",
    "from transformers_cfg.grammar_utils import IncrementalGrammarConstraint\n",
    "from transformers_cfg.generation.logits_process import GrammarConstrainedLogitsProcessor\n",
    "\n",
    "JSON_ARR_GBNF = r\"\"\"\n",
    "# This is the same as json.gbnf but we restrict whitespaces at the end of the root array\n",
    "# Useful for generating JSON arrays\n",
    "root   ::= arr\n",
    "value  ::= object | array | string | number | (\"true\" | \"false\" | \"null\") ws\n",
    "arr  ::=\n",
    "  \"[\\n\" ws (\n",
    "            value\n",
    "    (\",\\n\" ws value)*\n",
    "  )? \"]\"\n",
    "object ::=\n",
    "  \"{\" ws (\n",
    "            string \":\" ws value\n",
    "    (\",\" ws string \":\" ws value)*\n",
    "  )? \"}\" ws\n",
    "array  ::=\n",
    "  \"[\" ws (\n",
    "            value\n",
    "    (\",\" ws value)*\n",
    "  )? \"]\" ws\n",
    "string ::=\n",
    "  \"\\\"\" (\n",
    "    [^\"\\\\\\x7F\\x00-\\x1F] |\n",
    "    \"\\\\\" ([\"\\\\/bfnrt] | \"u\" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) # escapes\n",
    "  )* \"\\\"\" ws\n",
    "number ::= (\"-\"? ([0-9] | [1-9] [0-9]*)) (\".\" [0-9]+)? ([eE] [-+]? [0-9]+)? ws\n",
    "# Optional space: by convention, applied in this grammar after literal chars when allowed\n",
    "ws ::= ([ \\t\\n] ws)?\n",
    "\"\"\"\n",
    "\n",
    "def generate_with_grammar(model, input_ids, **kwargs):\n",
    "    tokenizer = AutoTokenizer.from_pretrained(model.config.name_or_path)\n",
    "    grammar = IncrementalGrammarConstraint(JSON_ARR_GBNF, start_rule_name=\"root\", tokenizer=tokenizer)\n",
    "    grammar_processor = GrammarConstrainedLogitsProcessor(grammar)\n",
    "\n",
    "    partial_generate = partial(\n",
    "        model.generate,\n",
    "        do_sample=False,\n",
    "        repetition_penalty=1.1,\n",
    "        num_return_sequences=1,\n",
    "        logits_processor=[grammar_processor],  # Ensure grammar_processor is accessible\n",
    "        temperature=None,\n",
    "        top_p=None,\n",
    "        top_k=None,\n",
    "        sliding_window=None,\n",
    "    )\n",
    "\n",
    "    # Execute generation with merged parameters\n",
    "    return partial_generate(\n",
    "        input_ids=input_ids,\n",
    "        **kwargs\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 408,
     "referenced_widgets": [
      "26062536695547da98bb96e8bae5fa30",
      "587b3d5a5782431d8ba0257f997390c0",
      "c2e9d271af1449329bb7a3aeed9dec95",
      "9f95b66bc04b45ac8c291e90c4101921",
      "c1275a9bc9d949c8944870b1d0a58f0c",
      "498f42b240534add84e727a2ac2f8d0c",
      "cc5e0350a895469b8907801d2ddfc116",
      "06de6a033cd9416da2d32e343ffd6f82",
      "88be632353ac4aa9b4c7580f5c8f4d05",
      "7ce8c1e1642d4ff2b4e9fdd75487a7c1",
      "6f45335cfbda48b4bc7de3824c8adda2",
      "a4451c36012745b9a12218af49e93956",
      "73aa3cc053e44d1aa1c2c3930e07abce",
      "cc2b6ccbb4044f499b3616dbb3704275",
      "170c8e302fa5457a91c43e02b964ff4c",
      "557d12eabf05431980b26af12ca9e3b3",
      "3c73c54b7701493d92ff6ced3735dce3",
      "c18476863ce24354adbb343720fa1085",
      "44aed22fadf340babe47e18cc3609603",
      "c2f9d9cbd9b648fdaa533005e0231538",
      "6867fef6ddfa4901b267e92a9a2cdae9",
      "1119aa8b93da44fe84f9133c6d564ffd",
      "4f4ec8343cca49529ba82e28a94d4ba3",
      "043f65a4ea764e6cac6c9635c97f97eb",
      "69ac7164e60f4a3aa46a37a722e03451",
      "3089a3c50708464783a3447c0ef650f1",
      "03d65e13dc174e92bbbcbc5088909f9d",
      "d712e72eebf14a23a5c321795d0a4d19",
      "906d688903c7464ca09c6c61644a27a0",
      "2c8df8d547574b2f985c7794b4642b76",
      "e92bfb506b4744c08f40d33962e7c856",
      "2c43b1321e4d4fafb433c496e6c19b90",
      "05f2869680dd4e6aa1e8068406bff183",
      "453990d396d348769cee958b5826a932",
      "a962f4949e1f42d8aa1791674e16da78",
      "d052810c41e843bb8e63ed650fc72dbb",
      "341c4de23f1848c79d0ce62190f308e7",
      "14c690cb2b5f410dbd8bf82f772c4802",
      "ca9d082a491b499c93fc044ea69151e5",
      "f1edfa6acde44acca81dc5cac5543ab8",
      "025ae279fcb74246b9bfb3bfd923904c",
      "0431e31bf3ea4e0d80eaef4db8311bd6",
      "6d3a4e95a8954714bb681834d05ab309",
      "e52f671db0794a548ae77ad06b5134b6",
      "e5c600ca83f345b7bb6550bd6f25bc2c",
      "051169313068408a9aee6ae705be5d72",
      "2ec34140efa84ca29135afa6b4aa475f",
      "6ae2bcda9b1540bfae0b7c182e60b2c7",
      "0ad2ded850b542f5802ade7571301c3b",
      "16ef86cc39a44c839621cda63cccfc41",
      "92b35a13a55b4838bf1c728b8a74bab1",
      "1ffa1f53cbd74a76a5933f749881e94c",
      "624d5c08b8fd4e38bca6c55878bd26eb",
      "b3ba88110d5c4b1da54fa61657d3dae4",
      "3ca40da457a94b0c9bf4f0d3e7045bad",
      "6b4cec98b8e64dfaa187b21f34d0a45e",
      "096795df31e64d2688c4be21e1326498",
      "d68c4628980a462c9b5dad58c54d9fbf",
      "2c0c7406572e4218a9541d152f0229c9",
      "62d6a0005faf4359a3b7e980f6a12676",
      "7ff72b61dadb432f98826d83aa972e70",
      "bb0039fe21594c27a09e91d58f0db14a",
      "52a12ec9d90444f182a329c34feb9e29",
      "f50500601bc94cdeb200a0d3b3c80a95",
      "2b6ea547721a4099815aac0c315dc97c",
      "de7962e4c6a04f839a98fd8317ca26d7"
     ]
    },
    "executionInfo": {
     "elapsed": 21358,
     "status": "ok",
     "timestamp": 1742164818142,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "5I6ljHnWNfnd",
    "outputId": "e33ccb3e-a3fb-4fab-dea8-a4a00f867dd0"
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "26062536695547da98bb96e8bae5fa30",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer_config.json:   0%|          | 0.00/7.51k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a4451c36012745b9a12218af49e93956",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "vocab.json:   0%|          | 0.00/2.78M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4f4ec8343cca49529ba82e28a94d4ba3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "merges.txt:   0%|          | 0.00/1.67M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "453990d396d348769cee958b5826a932",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "tokenizer.json:   0%|          | 0.00/7.03M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e5c600ca83f345b7bb6550bd6f25bc2c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "added_tokens.json:   0%|          | 0.00/632 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6b4cec98b8e64dfaa187b21f34d0a45e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "special_tokens_map.json:   0%|          | 0.00/613 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\n",
      "    {\n",
      "        \"name\": \"get_vector_sum\",\n",
      "        \"arguments\": {\n",
      "            \"a\": [1, -1, 2],\n",
      "            \"b\": [3, 0, -4]\n",
      "        }\n",
      "    }\n",
      "]\n"
     ]
    }
   ],
   "source": [
    "output = generate_with_grammar(\n",
    "    model=model,\n",
    "    input_ids=input_ids\n",
    ")\n",
    "\n",
    "generated_tokens = output[:, input_ids.shape[1]:]\n",
    "\n",
    "decoded_output = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)\n",
    "\n",
    "for i, message in enumerate(decoded_output):\n",
    "    print(f\"{message}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EESZm0wBNqA2"
   },
   "source": [
    "From here we can now parse the arguments provided to us by the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 11,
     "status": "ok",
     "timestamp": 1742164818143,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "0xCxL_SgM4J0",
    "outputId": "ce8e68ba-a9bd-4e7b-aa42-02e27dc7fcf4"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "args a: [1, -1, 2], b: [3, 0, -4]\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "\n",
    "content = json.loads(decoded_output[0])\n",
    "arguments = content[0]['arguments']\n",
    "vector_a = arguments['a']\n",
    "vector_b = arguments['b']\n",
    "print(f\"args a: {vector_a}, b: {vector_b}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hBRMiKiuN-D4"
   },
   "source": [
    "Here we actually call `get_vector_sum()` and capture the result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 4,
     "status": "ok",
     "timestamp": 1742164818144,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "XvA-YnvRN7vJ",
    "outputId": "d29deddd-725d-4802-b1fa-15b266dcadf5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "result: [4, -1, -2]\n"
     ]
    }
   ],
   "source": [
    "result = get_vector_sum(vector_a, vector_b)\n",
    "print(f\"result: {result}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "82zbHycZNfne"
   },
   "source": [
    "Below is the final prompt to the model in the form of a chat message. To ensure that the model responds with the actual answer  prompted the model's answer with the following:\n",
    "\n",
    "> You are a super helpful AI assistant. You are asked to answer a question based on the following context information.\n",
    ">\n",
    "> Question:\n",
    ">\n",
    "> Answer:\n",
    "\n",
    "Then we set `continue_final_message=True` for the tokenizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 781,
     "status": "ok",
     "timestamp": 1742164818923,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "j6p7fmcHSCll",
    "outputId": "f57f0558-5d29-412c-c243-49a5bc72aeb2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n",
      "<|im_start|>user\n",
      "You are a super helpful AI assistant.\n",
      "You are asked to answer a question based on the following context information.\n",
      "Question:\n",
      "Find the sum of a = [1, -1, 2] and b = [3, 0, -4].<|im_end|>\n",
      "<|im_start|>assistant\n",
      "<tool_call>\n",
      "{\"name\": \"get_vector_sum\", \"arguments\": {\"a\": [1, -1, 2], \"b\": [3, 0, -4]}}\n",
      "</tool_call><|im_end|>\n",
      "<|im_start|>user\n",
      "<tool_response>\n",
      "[4, -1, -2]\n",
      "</tool_response><|im_end|>\n",
      "<|im_start|>assistant\n",
      "Answer:\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import string\n",
    "\n",
    "\n",
    "def generate_alphanumeric():\n",
    "    characters = string.ascii_letters + string.digits\n",
    "    result = ''.join(random.choice(characters) for _ in range(9))\n",
    "    return result\n",
    "\n",
    "\n",
    "messages = []\n",
    "\n",
    "original_prompt = user_query['content']\n",
    "\n",
    "prompt_with_context = f\"\"\"You are a super helpful AI assistant.\n",
    "You are asked to answer a question based on the following context information.\n",
    "Question:\n",
    "{original_prompt}\"\"\"\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"user\",\n",
    "    \"content\": prompt_with_context\n",
    "})\n",
    "\n",
    "tool_call_id = generate_alphanumeric()\n",
    "tool_calls = [{\n",
    "    \"id\": tool_call_id,\n",
    "    \"type\": \"function\",\n",
    "    \"function\": {\n",
    "        \"name\": \"get_vector_sum\",\n",
    "        \"arguments\": arguments\n",
    "    }\n",
    "}]\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"assistant\",\n",
    "    \"tool_calls\": tool_calls\n",
    "})\n",
    "messages.append({\n",
    "    \"role\": \"tool\",\n",
    "    \"name\": \"get_vector_sum\",\n",
    "    \"content\": result\n",
    "})\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"assistant\",\n",
    "    \"content\": \"Answer:\\n\"\n",
    "})\n",
    "\n",
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "tool_prompt = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    continue_final_message=True,\n",
    "    add_special_tokens=True,\n",
    "    return_tensors=\"pt\",\n",
    "    return_dict=True,\n",
    "    tools=None,\n",
    ")\n",
    "tool_prompt = tool_prompt.to(model.device)\n",
    "\n",
    "print(tokenizer.decode(tool_prompt['input_ids'][0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 2012,
     "status": "ok",
     "timestamp": 1742164820936,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "tYKun5XgQURH",
    "outputId": "bec258e3-139d-4337-d583-82f8cd8e9fce"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The sum of a = [1, -1, 2] and b = [3, 0, -4] is [4, -1, -2].\n"
     ]
    }
   ],
   "source": [
    "out = model.generate(**tool_prompt, max_new_tokens=128)\n",
    "generated_text = out[0, tool_prompt['input_ids'].shape[1]:]\n",
    "\n",
    "print(tokenizer.decode(generated_text, skip_special_tokens=True))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Xyeipvv2xSxB"
   },
   "source": [
    "For comparison, if we would prompt the model without tool calling:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 492,
     "status": "ok",
     "timestamp": 1742164821430,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "kXdIa3jueI-i",
    "outputId": "4d0b3486-5ebe-46e4-dcf2-305e1c300619"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n",
      "<|im_start|>user\n",
      "Find the sum of a = [1, -1, 2] and b = [3, 0, -4].<|im_end|>\n",
      "<|im_start|>assistant\n",
      "\n"
     ]
    }
   ],
   "source": [
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "input_ids = tokenizer.apply_chat_template(\n",
    "    [user_query],\n",
    "    tokenize=True,\n",
    "    add_generation_prompt=True,\n",
    "    add_special_tokens=False,\n",
    "    padding=True,\n",
    "    tools=None,\n",
    "    return_tensors=\"pt\",\n",
    ").to(\"cuda\")\n",
    "\n",
    "print(tokenizer.decode(input_ids[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 10351,
     "status": "ok",
     "timestamp": 1742164831782,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "LJfdZ1G194_t",
    "outputId": "69b421ed-7c25-4e22-ecc6-a2e563e8f9c6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "To find the sum of two vectors \\( \\mathbf{a} = [1, -1, 2] \\) and \\( \\mathbf{b} = [3, 0, -4] \\), we need to add corresponding components of the vectors.\n",
      "\n",
      "The sum of two vectors \\( \\mathbf{a} = [a_1, a_2, a_3] \\) and \\( \\mathbf{b} = [b_1, b_2, b_3] \\) is given by:\n",
      "\\[ \\mathbf{a} + \\mathbf{b} = [a_1 + b_1, a_2 + b_2, a_3 + b_3] \\]\n",
      "\n",
      "Let's compute this step-by-step using Python code.\n",
      "```python\n",
      "# Define the vectors\n",
      "a = [1, -1, 2]\n",
      "b = [3, 0, -4]\n",
      "\n",
      "# Compute the sum of the vectors\n",
      "result = [a_i + b_i for a_i, b_i in zip(a, b)]\n",
      "print(result)\n",
      "```\n",
      "```output\n",
      "[4, -1, -2]\n",
      "```\n",
      "The sum of the vectors \\( \\mathbf{a} = [1, -1, 2] \\) and \\( \\mathbf{b} = [3, 0, -4] \\) is \\( \\boxed{[4, -1, -2]} \\).\n"
     ]
    }
   ],
   "source": [
    "output = model.generate(\n",
    "    input_ids=input_ids,\n",
    "    max_new_tokens=1024\n",
    ")\n",
    "\n",
    "generated_tokens = output[:, input_ids.shape[1]:]\n",
    "decoded_output = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)\n",
    "\n",
    "for i, message in enumerate(decoded_output):\n",
    "    print(f\"{message}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6NgmkhLSoaXv"
   },
   "source": [
    "### Example currency calculation with API call\n",
    "For the example below, we are going to ask the model to compute a total list of items and convert it to Euro using a public API.\n",
    "\n",
    "Pydantic is used below because it will help us with type safety and validation, and also helps us with clear function schemas.\n",
    "\n",
    "For the prompt, we will ask the model \"How much is the total cost of all inventory items in Euros?\"\n",
    "\n",
    "Based on the prompt we need to define three tools\n",
    "1. Get a list of all items in the inventory\n",
    "2. The conversion rate of the Euro currency\n",
    "2. Compute the total inventory cost in Euros\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "executionInfo": {
     "elapsed": 1,
     "status": "ok",
     "timestamp": 1742164831785,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "K_2-9JLgva3X"
   },
   "outputs": [],
   "source": [
    "user_query = {\n",
    "    \"role\": \"user\",\n",
    "    \"content\": \"How much is the total cost of all inventory items in Euros?\"\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "executionInfo": {
     "elapsed": 13,
     "status": "ok",
     "timestamp": 1742165129359,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "2XACEzJdyWud"
   },
   "outputs": [],
   "source": [
    "from typing import List, Optional, AnyStr\n",
    "from pydantic import BaseModel, Field\n",
    "import requests\n",
    "\n",
    "\n",
    "class Item(BaseModel):\n",
    "    id: int | None = Field(\n",
    "        default=None,\n",
    "        description=\"Unique identifier for the item (auto-generated by database)\"\n",
    "    )\n",
    "    item_code: str = Field(\n",
    "        ...,\n",
    "        min_length=3,\n",
    "        max_length=20,\n",
    "        description=\"Unique SKU or product code for the item\"\n",
    "    )\n",
    "    name: str = Field(\n",
    "        ...,\n",
    "        min_length=2,\n",
    "        max_length=50,\n",
    "        description=\"Human-readable name of the item\"\n",
    "    )\n",
    "    cost: float = Field(\n",
    "        ...,\n",
    "        gt=0,\n",
    "        description=\"Unit cost in local currency (must be positive)\"\n",
    "    )\n",
    "    quantity: int = Field(\n",
    "        ...,\n",
    "        ge=0,\n",
    "        description=\"Current inventory quantity (non-negative integer)\"\n",
    "    )\n",
    "\n",
    "\n",
    "def inventory_check(item_codes: Optional[List[str]], conversion_rate: float) -> float:\n",
    "    \"\"\"\n",
    "    Calculates the total value of inventory items in the target conversion rate.\n",
    "    When item_codes=None, calculates total value for all items.\n",
    "\n",
    "    Args:\n",
    "        item_codes: List of item codes to include. (None for all items)\n",
    "        conversion_rate: Exchange rate to convert costs to target currency\n",
    "    Returns:\n",
    "        Total value of matching items in target currency, rounded to 2 decimals\n",
    "    \"\"\"\n",
    "    all_items = get_all_items()\n",
    "\n",
    "    # Process all items if None is passed\n",
    "    if item_codes is None or len(item_codes) == 0:\n",
    "        items_to_process = all_items\n",
    "    else:\n",
    "        # Convert to set for faster lookups\n",
    "        target_codes = set(item_codes)\n",
    "        items_to_process = [item for item in all_items if item.item_code in target_codes]\n",
    "\n",
    "    # Calculate total value with conversion\n",
    "    total = sum(\n",
    "        item.cost * item.quantity * conversion_rate\n",
    "        for item in items_to_process\n",
    "    )\n",
    "\n",
    "    return round(total, 2)\n",
    "\n",
    "\n",
    "def get_all_items() -> List[Item]:\n",
    "    \"\"\"Fetches all the inventory items\"\"\"\n",
    "    return [\n",
    "        Item(\n",
    "            item_code=\"ITEM-001\",\n",
    "            name=\"Apple\",\n",
    "            cost=1.13,\n",
    "            quantity=4\n",
    "        ),\n",
    "        Item(\n",
    "            item_code=\"ITEM-002\",\n",
    "            name=\"Bottled Water\",\n",
    "            cost=1.04,\n",
    "            quantity=20\n",
    "        ),\n",
    "        Item(\n",
    "            item_code=\"ITEM-003\",\n",
    "            name=\"Instant Ramen\",\n",
    "            cost=10.13,\n",
    "            quantity=4\n",
    "        )\n",
    "    ]\n",
    "\n",
    "\n",
    "def get_usd_to_euro_conversion_rate() -> float:\n",
    "    \"\"\"Gets the conversion rate from USD to EURO\"\"\"\n",
    "    response = requests.get(\"https://api.frankfurter.app/latest?from=USD\")\n",
    "    response.raise_for_status()\n",
    "    rate = response.json()[\"rates\"][\"EUR\"]\n",
    "    return rate"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hhXc902j-ICe"
   },
   "source": [
    "Below we validate the `tools` before passing it to the tokenizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "executionInfo": {
     "elapsed": 2,
     "status": "ok",
     "timestamp": 1742165138114,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "IsEBB0zZ1HCs"
   },
   "outputs": [],
   "source": [
    "from transformers.utils import chat_template_utils\n",
    "\n",
    "tools = [get_all_items, inventory_check, get_usd_to_euro_conversion_rate]\n",
    "\n",
    "orig_tools = copy.deepcopy(tools)  # save a copy for later\n",
    "\n",
    "for tool in tools:\n",
    "    _ = chat_template_utils.get_json_schema(tool)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "nsnNrPIM-TeO"
   },
   "source": [
    "After ensuring the functions are valid we pass it to the `tools` param"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 18,
     "status": "ok",
     "timestamp": 1742165306048,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "YCbA9e-PvJkl",
    "outputId": "37e480d2-9542-47e1-d45f-5a49d0577bf3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.\n",
      "\n",
      "# Tools\n",
      "\n",
      "You may call one or more functions to assist with the user query.\n",
      "\n",
      "You are provided with function signatures within <tools></tools> XML tags:\n",
      "<tools>\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"get_all_items\", \"description\": \"Fetches all the inventory items\", \"parameters\": {\"type\": \"object\", \"properties\": {}}, \"return\": {\"type\": \"array\", \"items\": {\"type\": \"object\"}}}}\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"inventory_check\", \"description\": \"Calculates the total value of inventory items in the target conversion rate.\\nWhen item_codes=None, calculates total value for all items.\", \"parameters\": {\"type\": \"object\", \"properties\": {\"item_codes\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"nullable\": true, \"description\": \"List of item codes to include (None for all items)\"}, \"conversion_rate\": {\"type\": \"number\", \"description\": \"Exchange rate to convert costs to target currency\"}}, \"required\": [\"item_codes\", \"conversion_rate\"]}, \"return\": {\"type\": \"number\", \"description\": \"Total value of matching items in target currency, rounded to 2 decimals\"}}}\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"get_usd_to_euro_conversion_rate\", \"description\": \"Gets the conversion rate from USD to EURO\", \"parameters\": {\"type\": \"object\", \"properties\": {}}, \"return\": {\"type\": \"number\"}}}\n",
      "</tools>\n",
      "\n",
      "For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n",
      "<tool_call>\n",
      "{\"name\": <function-name>, \"arguments\": <args-json-object>}\n",
      "</tool_call><|im_end|>\n",
      "<|im_start|>user\n",
      "How much is the total cost of all inventory items in Euros?<|im_end|>\n",
      "<|im_start|>assistant\n",
      "\n"
     ]
    }
   ],
   "source": [
    "messages = []\n",
    "\n",
    "messages.append(user_query)\n",
    "\n",
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "input_ids = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    tokenize=True,\n",
    "    add_generation_prompt=True,\n",
    "    add_special_tokens=False,\n",
    "    padding=True,\n",
    "    tools=tools,  # pass the tools\n",
    "    return_tensors=\"pt\",\n",
    ").to(\"cuda\")\n",
    "\n",
    "print(tokenizer.decode(input_ids[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 11854,
     "status": "ok",
     "timestamp": 1742165320283,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "WhutWZ65xJuI",
    "outputId": "9e76c456-18e6-43b2-f34f-81e55c08f2a7"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\n",
      "\n",
      "    {\n",
      "        \"name\": \"inventory_check\",\n",
      "        \"arguments\": {\n",
      "            \"item_codes\": [],\n",
      "            \"conversion_rate\": 0.85\n",
      "        }\n",
      "    }\n",
      "\n",
      "]\n"
     ]
    }
   ],
   "source": [
    "output = generate_with_grammar(\n",
    "    model=model,\n",
    "    input_ids=input_ids\n",
    ")\n",
    "\n",
    "generated_tokens = output[:, input_ids.shape[1]:]\n",
    "\n",
    "decoded_output = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)\n",
    "\n",
    "for i, message in enumerate(decoded_output):\n",
    "    print(f\"{message}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 46,
     "status": "ok",
     "timestamp": 1742165362660,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "87_9T7uJzUnF",
    "outputId": "dc1242af-b6c4-453b-d87f-21cf2c80dab7"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item_codes: [], conversion_rate: 0.85\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "\n",
    "content = json.loads(decoded_output[0])\n",
    "arguments = content[0]['arguments']\n",
    "item_codes = arguments['item_codes']\n",
    "conversion_rate = arguments['conversion_rate']\n",
    "print(f\"item_codes: {item_codes}, conversion_rate: {conversion_rate}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "iCrWHc567986"
   },
   "source": [
    "Here we actually call `inventory_check()` and capture the result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 16,
     "status": "ok",
     "timestamp": 1742165373667,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "pCxTSXsz7uUV",
    "outputId": "785c8d4d-831e-436f-d04d-e7010dbeace5"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "55.96"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_total = inventory_check(item_codes, conversion_rate)\n",
    "result_total"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 686,
     "status": "ok",
     "timestamp": 1742165400392,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "t_NtXUxf8Hbi",
    "outputId": "785ab824-9a52-484b-8c9a-16c678d22f67"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n",
      "<|im_start|>user\n",
      "You are a super helpful AI assistant.\n",
      "You are asked to answer a question based on the following context information.\n",
      "Question:\n",
      "How much is the total cost of all inventory items in Euros?<|im_end|>\n",
      "<|im_start|>assistant\n",
      "<tool_call>\n",
      "{\"name\": \"inventory_check\", \"arguments\": {\"item_codes\": [], \"conversion_rate\": 0.85}}\n",
      "</tool_call><|im_end|>\n",
      "<|im_start|>user\n",
      "<tool_response>\n",
      "55.96\n",
      "</tool_response><|im_end|>\n",
      "<|im_start|>assistant\n",
      "Answer:\n",
      "\n"
     ]
    }
   ],
   "source": [
    "messages = []\n",
    "\n",
    "original_prompt = user_query['content']\n",
    "\n",
    "prompt_with_context = f\"\"\"You are a super helpful AI assistant.\n",
    "You are asked to answer a question based on the following context information.\n",
    "Question:\n",
    "{original_prompt}\"\"\"\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"user\",\n",
    "    \"content\": prompt_with_context\n",
    "})\n",
    "\n",
    "tool_call_id = generate_alphanumeric()\n",
    "tool_calls = [{\n",
    "    \"id\": tool_call_id,\n",
    "    \"type\": \"function\",\n",
    "    \"function\": {\n",
    "        \"name\": \"inventory_check\",\n",
    "        \"arguments\": arguments\n",
    "    }\n",
    "}]\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"assistant\",\n",
    "    \"tool_calls\": tool_calls\n",
    "})\n",
    "messages.append({\n",
    "    \"role\": \"tool\",\n",
    "    \"name\": \"inventory_check\",\n",
    "    \"content\": result_total\n",
    "})\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"assistant\",\n",
    "    \"content\": \"Answer:\\n\"\n",
    "})\n",
    "\n",
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "tool_prompt = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    continue_final_message=True,\n",
    "    add_special_tokens=True,\n",
    "    return_tensors=\"pt\",\n",
    "    return_dict=True,\n",
    "    tools=None,\n",
    ")\n",
    "tool_prompt = tool_prompt.to(model.device)\n",
    "\n",
    "print(tokenizer.decode(tool_prompt['input_ids'][0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 809,
     "status": "ok",
     "timestamp": 1742165403470,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "FsqMTNst8iQh",
    "outputId": "e55b383c-3251-4d3a-b418-a66f92729b51"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total cost of all inventory items in Euros is 55.96.\n"
     ]
    }
   ],
   "source": [
    "out = model.generate(**tool_prompt, max_new_tokens=128)\n",
    "generated_text = out[0, tool_prompt['input_ids'].shape[1]:]\n",
    "\n",
    "print(tokenizer.decode(generated_text, skip_special_tokens=True))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "wA7I2BvY-sxq"
   },
   "source": [
    "Let's try if the model can use the correct tools for fetching item names. Note that we added a prompt \"Ensure to use fetch_item_by_name first for fetching the item code\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "executionInfo": {
     "elapsed": 41,
     "status": "ok",
     "timestamp": 1742165907603,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "tFSIik9M8ydF"
   },
   "outputs": [],
   "source": [
    "user_query = {\n",
    "    \"role\": \"user\",\n",
    "    \"content\": f\"\"\"How much is the total inventory cost of item name: Bottled Water in Euros? Ensure to use fetch_item_by_name first for fetching the item code\"\"\"\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "J1i3vOjFIA7U"
   },
   "source": [
    "Below we declare a new function `fetch_item_by_name` which fetches a single item based on the item name. Next we append the new function to our tool list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "executionInfo": {
     "elapsed": 6,
     "status": "ok",
     "timestamp": 1742165932486,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "hiH8xlwcGuG1"
   },
   "outputs": [],
   "source": [
    "def fetch_item_by_name(item_name: str) -> Optional[Item]:\n",
    "    \"\"\"\n",
    "    Fetch an item by name and returns the Item object.\n",
    "\n",
    "    Args:\n",
    "        item_name: The human-readable name of the item to fetch\n",
    "    Returns:\n",
    "        Optional[Item]: The Item with the given name, or None if not found\n",
    "    \"\"\"\n",
    "    all_items = get_all_items()\n",
    "    return next((item for item in all_items if item.name == item_name), None)\n",
    "\n",
    "\n",
    "# append to the tools list\n",
    "tools = copy.deepcopy(orig_tools)\n",
    "\n",
    "# place it at the top of the list\n",
    "tools.insert(0, fetch_item_by_name)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "w9PPKfsTIllY"
   },
   "source": [
    "Let's make sure that we have a valid tools definition"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "executionInfo": {
     "elapsed": 3,
     "status": "ok",
     "timestamp": 1742165933515,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "EJqNBoP3Iisp"
   },
   "outputs": [],
   "source": [
    "from transformers.utils import chat_template_utils\n",
    "\n",
    "for tool in tools:\n",
    "    _ = chat_template_utils.get_json_schema(tool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 677,
     "status": "ok",
     "timestamp": 1742165935451,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "T3CLRZ00-9A1",
    "outputId": "c257d6fb-fabe-4225-d64a-89b346f637c9"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.\n",
      "\n",
      "# Tools\n",
      "\n",
      "You may call one or more functions to assist with the user query.\n",
      "\n",
      "You are provided with function signatures within <tools></tools> XML tags:\n",
      "<tools>\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"fetch_item_by_name\", \"description\": \"Fetch an item by name and returns the Item object.\", \"parameters\": {\"type\": \"object\", \"properties\": {\"item_name\": {\"type\": \"string\", \"description\": \"The human-readable name of the item to fetch\"}}, \"required\": [\"item_name\"]}, \"return\": {\"type\": \"object\", \"nullable\": true, \"description\": \"Optional[Item]: The Item with the given name, or None if not found\"}}}\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"get_all_items\", \"description\": \"Fetches all the inventory items\", \"parameters\": {\"type\": \"object\", \"properties\": {}}, \"return\": {\"type\": \"array\", \"items\": {\"type\": \"object\"}}}}\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"inventory_check\", \"description\": \"Calculates the total value of inventory items in the target conversion rate.\\nWhen item_codes=None, calculates total value for all items.\", \"parameters\": {\"type\": \"object\", \"properties\": {\"item_codes\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"nullable\": true, \"description\": \"List of item codes to include (None for all items)\"}, \"conversion_rate\": {\"type\": \"number\", \"description\": \"Exchange rate to convert costs to target currency\"}}, \"required\": [\"item_codes\", \"conversion_rate\"]}, \"return\": {\"type\": \"number\", \"description\": \"Total value of matching items in target currency, rounded to 2 decimals\"}}}\n",
      "{\"type\": \"function\", \"function\": {\"name\": \"get_usd_to_euro_conversion_rate\", \"description\": \"Gets the conversion rate from USD to EURO\", \"parameters\": {\"type\": \"object\", \"properties\": {}}, \"return\": {\"type\": \"number\"}}}\n",
      "</tools>\n",
      "\n",
      "For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n",
      "<tool_call>\n",
      "{\"name\": <function-name>, \"arguments\": <args-json-object>}\n",
      "</tool_call><|im_end|>\n",
      "<|im_start|>user\n",
      "How much is the total inventory cost of item name: Bottled Water in Euros? Ensure to use fetch_item_by_name first for fetching the item code<|im_end|>\n",
      "<|im_start|>assistant\n",
      "\n"
     ]
    }
   ],
   "source": [
    "messages = []\n",
    "\n",
    "messages.append(user_query)\n",
    "\n",
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "input_ids = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    tokenize=True,\n",
    "    add_generation_prompt=True,\n",
    "    add_special_tokens=False,\n",
    "    padding=True,\n",
    "    tools=tools,\n",
    "    return_tensors=\"pt\",\n",
    ").to(\"cuda\")\n",
    "\n",
    "print(tokenizer.decode(input_ids[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 20707,
     "status": "ok",
     "timestamp": 1742165958839,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "jPOewumK_BrL",
    "outputId": "02456456-17bd-4030-95f1-aace59055674"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\n",
      "\n",
      "    {\n",
      "        \"name\": \"fetch_item_by_name\",\n",
      "        \"arguments\": {\n",
      "            \"item_name\": \"Bottled Water\"\n",
      "        }\n",
      "    },\n",
      "    {\n",
      "        \"name\": \"inventory_check\",\n",
      "        \"arguments\": {\n",
      "            \"item_codes\": [\"12345\"],\n",
      "            \"conversion_rate\": 0.85\n",
      "        }\n",
      "    }\n",
      "\n",
      "]\n"
     ]
    }
   ],
   "source": [
    "output = generate_with_grammar(\n",
    "    model=model,\n",
    "    input_ids=input_ids\n",
    ")\n",
    "\n",
    "generated_tokens = output[:, input_ids.shape[1]:]\n",
    "\n",
    "decoded_output = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)\n",
    "\n",
    "for i, message in enumerate(decoded_output):\n",
    "    print(f\"{message}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pz_A2g9rIuGF"
   },
   "source": [
    "The model should return the values for the arguments of `fetch_item_by_name` and `inventory_check`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 10,
     "status": "ok",
     "timestamp": 1742165978785,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "G62KcBUq_D1C",
    "outputId": "31c6c040-a0d8-4662-8d90-cabf09a37d03"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item_name: Bottled Water, item_code: ITEM-002\n",
      "conversion_rate: 0.85\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "17.68"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import json\n",
    "\n",
    "content = json.loads(decoded_output[0])\n",
    "arguments_for_item_name = content[0]['arguments']\n",
    "item_name = arguments_for_item_name['item_name']\n",
    "\n",
    "item_code = fetch_item_by_name(item_name).item_code\n",
    "print(f\"item_name: {item_name}, item_code: {item_code}\")\n",
    "\n",
    "arguments_for_inventory_check = content[1]['arguments']\n",
    "conversion_rate = arguments_for_inventory_check['conversion_rate']\n",
    "print(f\"conversion_rate: {conversion_rate}\")\n",
    "\n",
    "result_total = inventory_check([item_code], conversion_rate)\n",
    "result_total"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6EYlMN28KLv4"
   },
   "source": [
    "After computing (actually call the inventory total of Bottled Water, we prompt the model again.\n",
    "\n",
    "Note that we've added the prompt below for for better accuracy.\n",
    "\n",
    "\"Answer:\\n\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 906,
     "status": "ok",
     "timestamp": 1742165991037,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "_PNksyC7HQZq",
    "outputId": "a9fdc69e-7306-4e8f-d25e-7e774b01da7e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<|im_start|>system\n",
      "You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n",
      "<|im_start|>user\n",
      "You are a super helpful AI assistant.\n",
      "You are asked to answer a question based on the following context information.\n",
      "Question:\n",
      "How much is the total inventory cost of item name: Bottled Water in Euros? Ensure to use fetch_item_by_name first for fetching the item code<|im_end|>\n",
      "<|im_start|>assistant\n",
      "<tool_call>\n",
      "{\"name\": \"inventory_check\", \"arguments\": {\"item_codes\": [], \"conversion_rate\": 0.85}}\n",
      "</tool_call><|im_end|>\n",
      "<|im_start|>user\n",
      "<tool_response>\n",
      "17.68\n",
      "</tool_response><|im_end|>\n",
      "<|im_start|>assistant\n",
      "Answer:\n",
      "\n"
     ]
    }
   ],
   "source": [
    "messages = []\n",
    "\n",
    "original_prompt = user_query['content']\n",
    "\n",
    "prompt_with_context = f\"\"\"You are a super helpful AI assistant.\n",
    "You are asked to answer a question based on the following context information.\n",
    "Question:\n",
    "{original_prompt}\"\"\"\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"user\",\n",
    "    \"content\": prompt_with_context\n",
    "})\n",
    "\n",
    "tool_call_id = generate_alphanumeric()\n",
    "tool_calls = [{\n",
    "    \"id\": tool_call_id,\n",
    "    \"type\": \"function\",\n",
    "    \"function\": {\n",
    "        \"name\": \"inventory_check\",\n",
    "        \"arguments\": arguments\n",
    "    }\n",
    "}]\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"assistant\",\n",
    "    \"tool_calls\": tool_calls\n",
    "})\n",
    "messages.append({\n",
    "    \"role\": \"tool\",\n",
    "    \"name\": \"inventory_check\",\n",
    "    \"content\": result_total  # pass the result total\n",
    "})\n",
    "\n",
    "messages.append({\n",
    "    \"role\": \"assistant\",\n",
    "    \"content\": \"Answer:\\n\"\n",
    "})\n",
    "\n",
    "tokenizer = copy.deepcopy(tokenizer_orig)\n",
    "tool_prompt = tokenizer.apply_chat_template(\n",
    "    messages,\n",
    "    continue_final_message=True,\n",
    "    add_special_tokens=True,\n",
    "    return_tensors=\"pt\",\n",
    "    return_dict=True,\n",
    "    tools=None,\n",
    ")\n",
    "tool_prompt = tool_prompt.to(model.device)\n",
    "\n",
    "print(tokenizer.decode(tool_prompt['input_ids'][0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 708,
     "status": "ok",
     "timestamp": 1742165996187,
     "user": {
      "displayName": "Jed",
      "userId": "11553494090571428644"
     },
     "user_tz": -480
    },
    "id": "URnnSKQ0Hf-T",
    "outputId": "acfa55a3-0496-4277-a882-9546513d542e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The total inventory cost of item name: Bottled Water is €17.68.\n"
     ]
    }
   ],
   "source": [
    "out = model.generate(**tool_prompt, max_new_tokens=128)\n",
    "generated_text = out[0, tool_prompt['input_ids'].shape[1]:]\n",
    "\n",
    "print(tokenizer.decode(generated_text, skip_special_tokens=True))"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "gpuType": "T4",
   "provenance": [
    {
     "file_id": "12cUzlVDyxosNhe_k4J-g3zQtUmvl2_NR",
     "timestamp": 1741936053454
    }
   ],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.9"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "025ae279fcb74246b9bfb3bfd923904c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "03d65e13dc174e92bbbcbc5088909f9d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0431e31bf3ea4e0d80eaef4db8311bd6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "043f65a4ea764e6cac6c9635c97f97eb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_d712e72eebf14a23a5c321795d0a4d19",
      "placeholder": "​",
      "style": "IPY_MODEL_906d688903c7464ca09c6c61644a27a0",
      "value": "merges.txt: 100%"
     }
    },
    "051169313068408a9aee6ae705be5d72": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_16ef86cc39a44c839621cda63cccfc41",
      "placeholder": "​",
      "style": "IPY_MODEL_92b35a13a55b4838bf1c728b8a74bab1",
      "value": "added_tokens.json: 100%"
     }
    },
    "05f2869680dd4e6aa1e8068406bff183": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "063541a0053545bea8f2e876fd2acb68": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_09d55268e88d4dc288a001427f61a4fd",
      "placeholder": "​",
      "style": "IPY_MODEL_806dac7b48c0492396d0e967c65d8c71",
      "value": "config.json: 100%"
     }
    },
    "06de6a033cd9416da2d32e343ffd6f82": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "096795df31e64d2688c4be21e1326498": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_7ff72b61dadb432f98826d83aa972e70",
      "placeholder": "​",
      "style": "IPY_MODEL_bb0039fe21594c27a09e91d58f0db14a",
      "value": "special_tokens_map.json: 100%"
     }
    },
    "09d55268e88d4dc288a001427f61a4fd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0accca7a631d42b8a95b7dcad70d14b8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0ad2ded850b542f5802ade7571301c3b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "0dd25d69dee74fd58dd979cca5d3e587": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "0e74b5680f5e4e5787bdb5e88984b74e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "103932911c4d409b8d801f9343affab9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "10a81cd2eab6441a872147db79f7ef1d": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "10c7f59dc0864aa59b754f0234514f1e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_063541a0053545bea8f2e876fd2acb68",
       "IPY_MODEL_92dc9145ab524f498bfc0c35f9fdb174",
       "IPY_MODEL_11ca17ec35074f318bc144a9227478ac"
      ],
      "layout": "IPY_MODEL_ea1e5a33362a43db8766cb0c08b578dd"
     }
    },
    "1119aa8b93da44fe84f9133c6d564ffd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "11ca17ec35074f318bc144a9227478ac": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_5ebe13f6cae44361aed89ea22530cc87",
      "placeholder": "​",
      "style": "IPY_MODEL_6fd5a120e3ed475ebb764bd55a45d8ec",
      "value": " 765/765 [00:00&lt;00:00, 62.9kB/s]"
     }
    },
    "14c690cb2b5f410dbd8bf82f772c4802": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "14cce34c29324f2abb209aa31251d414": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3c1922834e5b420bbe3d8f7d2429b492",
      "placeholder": "​",
      "style": "IPY_MODEL_0accca7a631d42b8a95b7dcad70d14b8",
      "value": " 1.67M/1.67M [00:00&lt;00:00, 4.95MB/s]"
     }
    },
    "16ef86cc39a44c839621cda63cccfc41": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "170c8e302fa5457a91c43e02b964ff4c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6867fef6ddfa4901b267e92a9a2cdae9",
      "placeholder": "​",
      "style": "IPY_MODEL_1119aa8b93da44fe84f9133c6d564ffd",
      "value": " 2.78M/2.78M [00:00&lt;00:00, 11.1MB/s]"
     }
    },
    "1de87285321f4f01bc8bf86e3b0f86a5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1ffa1f53cbd74a76a5933f749881e94c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2483117f317a44d0b4eecb4a4e4f62aa": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "26062536695547da98bb96e8bae5fa30": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_587b3d5a5782431d8ba0257f997390c0",
       "IPY_MODEL_c2e9d271af1449329bb7a3aeed9dec95",
       "IPY_MODEL_9f95b66bc04b45ac8c291e90c4101921"
      ],
      "layout": "IPY_MODEL_c1275a9bc9d949c8944870b1d0a58f0c"
     }
    },
    "2a01d4ad5c8441baa8357117a9bada43": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "2b6ea547721a4099815aac0c315dc97c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2c0c7406572e4218a9541d152f0229c9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2b6ea547721a4099815aac0c315dc97c",
      "placeholder": "​",
      "style": "IPY_MODEL_de7962e4c6a04f839a98fd8317ca26d7",
      "value": " 613/613 [00:00&lt;00:00, 38.0kB/s]"
     }
    },
    "2c43b1321e4d4fafb433c496e6c19b90": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2c8df8d547574b2f985c7794b4642b76": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2dcc9afb45354f89b5930e740d889a7d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_e3659031c23d4bcb8136899c476e1a6c",
       "IPY_MODEL_e1a8bf02391b48efa942016ec7bebc6d",
       "IPY_MODEL_8f5bd8b322054dddb9d394e452544762"
      ],
      "layout": "IPY_MODEL_f2ae3349b890487abee3a557b186294e"
     }
    },
    "2ec34140efa84ca29135afa6b4aa475f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1ffa1f53cbd74a76a5933f749881e94c",
      "max": 632,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_624d5c08b8fd4e38bca6c55878bd26eb",
      "value": 632
     }
    },
    "3089a3c50708464783a3447c0ef650f1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2c43b1321e4d4fafb433c496e6c19b90",
      "placeholder": "​",
      "style": "IPY_MODEL_05f2869680dd4e6aa1e8068406bff183",
      "value": " 1.67M/1.67M [00:00&lt;00:00, 4.98MB/s]"
     }
    },
    "32be1aba98784b208667179dd5862de2": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3321d3cd97f942b38125b98226a72899": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "33d943034caf4ad98387b9116ceec2b5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_66d521d8e65e4f5285f89daaf7c8c38b",
      "placeholder": "​",
      "style": "IPY_MODEL_103932911c4d409b8d801f9343affab9",
      "value": " 7.51k/7.51k [00:00&lt;00:00, 473kB/s]"
     }
    },
    "341c4de23f1848c79d0ce62190f308e7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6d3a4e95a8954714bb681834d05ab309",
      "placeholder": "​",
      "style": "IPY_MODEL_e52f671db0794a548ae77ad06b5134b6",
      "value": " 7.03M/7.03M [00:00&lt;00:00, 14.0MB/s]"
     }
    },
    "34852aab3a4441b88dd65be909a7673b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_8a55ef8aed5144dbb02dfc99e5bd43ba",
      "placeholder": "​",
      "style": "IPY_MODEL_fc9ad241d66b4cb380183a04fc2e6c2f",
      "value": "added_tokens.json: 100%"
     }
    },
    "3671f2e22aac43edadd1240a1e1deeea": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "3b9cbaf2c1044450b41dab928d7c27da": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3c1922834e5b420bbe3d8f7d2429b492": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3c73c54b7701493d92ff6ced3735dce3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "3ca40da457a94b0c9bf4f0d3e7045bad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "40ef2bc30330404b89c337510d560b5b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "44aed22fadf340babe47e18cc3609603": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "453990d396d348769cee958b5826a932": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a962f4949e1f42d8aa1791674e16da78",
       "IPY_MODEL_d052810c41e843bb8e63ed650fc72dbb",
       "IPY_MODEL_341c4de23f1848c79d0ce62190f308e7"
      ],
      "layout": "IPY_MODEL_14c690cb2b5f410dbd8bf82f772c4802"
     }
    },
    "498f42b240534add84e727a2ac2f8d0c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "49eb1b29c8064d3baf42e78cd9305b73": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4a8f7ce47d0f4071831027affdb22bfa": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "4b481b20fe98408e97377eb6efea26f4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4d3b101d7b1a492bb1f2e0c1f94f7674": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "4f4ec8343cca49529ba82e28a94d4ba3": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_043f65a4ea764e6cac6c9635c97f97eb",
       "IPY_MODEL_69ac7164e60f4a3aa46a37a722e03451",
       "IPY_MODEL_3089a3c50708464783a3447c0ef650f1"
      ],
      "layout": "IPY_MODEL_03d65e13dc174e92bbbcbc5088909f9d"
     }
    },
    "52a12ec9d90444f182a329c34feb9e29": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "557d12eabf05431980b26af12ca9e3b3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "5701898928264a458c89f2c8a080e83a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "587b3d5a5782431d8ba0257f997390c0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_498f42b240534add84e727a2ac2f8d0c",
      "placeholder": "​",
      "style": "IPY_MODEL_cc5e0350a895469b8907801d2ddfc116",
      "value": "tokenizer_config.json: 100%"
     }
    },
    "5d880920945845578a03b0216241ecb9": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c2f5d7804bce46af81dad2129baf5a01",
      "placeholder": "​",
      "style": "IPY_MODEL_eff94aaebf5e45479fabd5b11c156291",
      "value": " 7.03M/7.03M [00:00&lt;00:00, 21.4MB/s]"
     }
    },
    "5ebe13f6cae44361aed89ea22530cc87": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6091d60224314261a301664d0362822a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "61fcb0f1cdd84a15a996cf6faaa0dc11": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_c0be1d43b3f446b98c32951e3d2bebe6",
       "IPY_MODEL_8a5cdb013ac046199d532fbaf286b577",
       "IPY_MODEL_33d943034caf4ad98387b9116ceec2b5"
      ],
      "layout": "IPY_MODEL_7223c1ddd12240eda1aa0d94120c7cbb"
     }
    },
    "624d5c08b8fd4e38bca6c55878bd26eb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "62d6a0005faf4359a3b7e980f6a12676": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "657fa8603e7e4e23b30ea3fbe3b66bcd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e640358764354406b64ea9d8cd62b97c",
      "max": 1671853,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c895eb1145aa41e2b0dc4e7862c8e1ad",
      "value": 1671853
     }
    },
    "66d521d8e65e4f5285f89daaf7c8c38b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6867fef6ddfa4901b267e92a9a2cdae9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "69ac7164e60f4a3aa46a37a722e03451": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2c8df8d547574b2f985c7794b4642b76",
      "max": 1671853,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_e92bfb506b4744c08f40d33962e7c856",
      "value": 1671853
     }
    },
    "69bbbbee4ca24dfa98cb2fd7aaded0d4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6ae2bcda9b1540bfae0b7c182e60b2c7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b3ba88110d5c4b1da54fa61657d3dae4",
      "placeholder": "​",
      "style": "IPY_MODEL_3ca40da457a94b0c9bf4f0d3e7045bad",
      "value": " 632/632 [00:00&lt;00:00, 18.1kB/s]"
     }
    },
    "6b4cec98b8e64dfaa187b21f34d0a45e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_096795df31e64d2688c4be21e1326498",
       "IPY_MODEL_d68c4628980a462c9b5dad58c54d9fbf",
       "IPY_MODEL_2c0c7406572e4218a9541d152f0229c9"
      ],
      "layout": "IPY_MODEL_62d6a0005faf4359a3b7e980f6a12676"
     }
    },
    "6d3a4e95a8954714bb681834d05ab309": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "6f45335cfbda48b4bc7de3824c8adda2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "6fd5a120e3ed475ebb764bd55a45d8ec": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "7223c1ddd12240eda1aa0d94120c7cbb": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "73aa3cc053e44d1aa1c2c3930e07abce": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3c73c54b7701493d92ff6ced3735dce3",
      "placeholder": "​",
      "style": "IPY_MODEL_c18476863ce24354adbb343720fa1085",
      "value": "vocab.json: 100%"
     }
    },
    "754e6537ebc3499499a68fbb5b25df53": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_40ef2bc30330404b89c337510d560b5b",
      "placeholder": "​",
      "style": "IPY_MODEL_a8f68b32207f43898a735122fb1e1026",
      "value": " 2.78M/2.78M [00:00&lt;00:00, 6.74MB/s]"
     }
    },
    "768be9bccefb4359bc21c0731e534399": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_fa6a56bbe82f412d8eff4968cddff88e",
      "placeholder": "​",
      "style": "IPY_MODEL_cfb8e59c6bdd4e84b24507aa86db8eed",
      "value": "vocab.json: 100%"
     }
    },
    "790165ff4f0046448b17bd3505cbc416": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "79b9bffeb1fb44abae641493395ddfd1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7ce8c1e1642d4ff2b4e9fdd75487a7c1": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7eb5ea11b3c84889995392a4a34e273b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7ff72b61dadb432f98826d83aa972e70": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "806dac7b48c0492396d0e967c65d8c71": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "837b744b041b48949cf2fb0e53ccf931": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "88be632353ac4aa9b4c7580f5c8f4d05": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "89a8ed76a8df4e87a1659b6adfb0d458": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_a442f35c4641456ba3b3b3c4fbee8995",
       "IPY_MODEL_a1604bdde1b34bbfb6ff7c12cb6c6e58",
       "IPY_MODEL_5d880920945845578a03b0216241ecb9"
      ],
      "layout": "IPY_MODEL_4d3b101d7b1a492bb1f2e0c1f94f7674"
     }
    },
    "8a55ef8aed5144dbb02dfc99e5bd43ba": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "8a5cdb013ac046199d532fbaf286b577": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_1de87285321f4f01bc8bf86e3b0f86a5",
      "max": 7512,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_cc126f714dd0422fadec2262b9818560",
      "value": 7512
     }
    },
    "8f5bd8b322054dddb9d394e452544762": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e3523f3c07f64fc88dacd72ac2ca1d3b",
      "placeholder": "​",
      "style": "IPY_MODEL_ed299eeae37b44afa7f2c605a93199e4",
      "value": " 3.09G/3.09G [00:22&lt;00:00, 396MB/s]"
     }
    },
    "906d688903c7464ca09c6c61644a27a0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "90dd6bb65f444300b184c720a6e1b339": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "926ae2d61c204b0c8b9b6e3a4a90926b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_0e74b5680f5e4e5787bdb5e88984b74e",
      "placeholder": "​",
      "style": "IPY_MODEL_2a01d4ad5c8441baa8357117a9bada43",
      "value": "generation_config.json: 100%"
     }
    },
    "92b35a13a55b4838bf1c728b8a74bab1": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "92dc9145ab524f498bfc0c35f9fdb174": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_7eb5ea11b3c84889995392a4a34e273b",
      "max": 765,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c11547368c9a4e81bf787800d355d7f4",
      "value": 765
     }
    },
    "9841a7ca0ec74e61b6c9654e2774f955": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_32be1aba98784b208667179dd5862de2",
      "placeholder": "​",
      "style": "IPY_MODEL_e8ab843c82c34379b3f7c0edf8fa98ba",
      "value": "merges.txt: 100%"
     }
    },
    "9f95b66bc04b45ac8c291e90c4101921": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_7ce8c1e1642d4ff2b4e9fdd75487a7c1",
      "placeholder": "​",
      "style": "IPY_MODEL_6f45335cfbda48b4bc7de3824c8adda2",
      "value": " 7.51k/7.51k [00:00&lt;00:00, 365kB/s]"
     }
    },
    "a1604bdde1b34bbfb6ff7c12cb6c6e58": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_69bbbbee4ca24dfa98cb2fd7aaded0d4",
      "max": 7031863,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c02c11128bed4f3bb57f3d185df12ebf",
      "value": 7031863
     }
    },
    "a3f10cdeab64466c86de3470279b5fbd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a442f35c4641456ba3b3b3c4fbee8995": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e545856974b842b3ad9d76508a9e9fcd",
      "placeholder": "​",
      "style": "IPY_MODEL_4a8f7ce47d0f4071831027affdb22bfa",
      "value": "tokenizer.json: 100%"
     }
    },
    "a4451c36012745b9a12218af49e93956": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_73aa3cc053e44d1aa1c2c3930e07abce",
       "IPY_MODEL_cc2b6ccbb4044f499b3616dbb3704275",
       "IPY_MODEL_170c8e302fa5457a91c43e02b964ff4c"
      ],
      "layout": "IPY_MODEL_557d12eabf05431980b26af12ca9e3b3"
     }
    },
    "a5b61a1d115d4a9db489042bedbec8f9": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a8f68b32207f43898a735122fb1e1026": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a9222c840014441d9199ddf2b7650d08": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_3321d3cd97f942b38125b98226a72899",
      "placeholder": "​",
      "style": "IPY_MODEL_e9b5c45236e94e3480dd6dbbb3d6fcf2",
      "value": " 632/632 [00:00&lt;00:00, 76.6kB/s]"
     }
    },
    "a962f4949e1f42d8aa1791674e16da78": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_ca9d082a491b499c93fc044ea69151e5",
      "placeholder": "​",
      "style": "IPY_MODEL_f1edfa6acde44acca81dc5cac5543ab8",
      "value": "tokenizer.json: 100%"
     }
    },
    "ab92d2ba313e4e1097f6bc302fb98409": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_926ae2d61c204b0c8b9b6e3a4a90926b",
       "IPY_MODEL_cda22ce77643405596be676b2eb35c80",
       "IPY_MODEL_c9195c4996084510ac2baeffc3958673"
      ],
      "layout": "IPY_MODEL_e718ccda074f49e1a488d71fd5c8f71c"
     }
    },
    "b1f0cbd2181141d1a33948740a18a917": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_79b9bffeb1fb44abae641493395ddfd1",
      "placeholder": "​",
      "style": "IPY_MODEL_0dd25d69dee74fd58dd979cca5d3e587",
      "value": "special_tokens_map.json: 100%"
     }
    },
    "b3ba88110d5c4b1da54fa61657d3dae4": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b4aa6dc09c4147bab29f7ace05579fe4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_768be9bccefb4359bc21c0731e534399",
       "IPY_MODEL_fefd0ef6800c4a8aa57e22d3681fa324",
       "IPY_MODEL_754e6537ebc3499499a68fbb5b25df53"
      ],
      "layout": "IPY_MODEL_2483117f317a44d0b4eecb4a4e4f62aa"
     }
    },
    "b56b2851286c47e09cd032bad6f697cf": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b8d3126b7d9d4a9a80c40789d9f68446": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a5b61a1d115d4a9db489042bedbec8f9",
      "placeholder": "​",
      "style": "IPY_MODEL_90dd6bb65f444300b184c720a6e1b339",
      "value": " 613/613 [00:00&lt;00:00, 51.4kB/s]"
     }
    },
    "bb0039fe21594c27a09e91d58f0db14a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "bd19725aa20d42d399f029caad53aa01": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_9841a7ca0ec74e61b6c9654e2774f955",
       "IPY_MODEL_657fa8603e7e4e23b30ea3fbe3b66bcd",
       "IPY_MODEL_14cce34c29324f2abb209aa31251d414"
      ],
      "layout": "IPY_MODEL_837b744b041b48949cf2fb0e53ccf931"
     }
    },
    "be0a1fb6e452464fbca63cba9a005b2b": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_4b481b20fe98408e97377eb6efea26f4",
      "max": 632,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f13f684bf6224980830986ed0a81e85a",
      "value": 632
     }
    },
    "bedc55a741994190afdde78a0b6952ce": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c02c11128bed4f3bb57f3d185df12ebf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c0be1d43b3f446b98c32951e3d2bebe6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_b56b2851286c47e09cd032bad6f697cf",
      "placeholder": "​",
      "style": "IPY_MODEL_cd5e8b1e84c74e0e959bffb5c75abf50",
      "value": "tokenizer_config.json: 100%"
     }
    },
    "c109cfd6be8c428993f7089a6c2a94df": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_b1f0cbd2181141d1a33948740a18a917",
       "IPY_MODEL_c2a1021f9a8e473ba170c943a003dc84",
       "IPY_MODEL_b8d3126b7d9d4a9a80c40789d9f68446"
      ],
      "layout": "IPY_MODEL_3b9cbaf2c1044450b41dab928d7c27da"
     }
    },
    "c11547368c9a4e81bf787800d355d7f4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c1275a9bc9d949c8944870b1d0a58f0c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c18476863ce24354adbb343720fa1085": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c2a1021f9a8e473ba170c943a003dc84": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a3f10cdeab64466c86de3470279b5fbd",
      "max": 613,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_d9288dbb67ca47d29fe3d188e11ca3d0",
      "value": 613
     }
    },
    "c2e9d271af1449329bb7a3aeed9dec95": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_06de6a033cd9416da2d32e343ffd6f82",
      "max": 7512,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_88be632353ac4aa9b4c7580f5c8f4d05",
      "value": 7512
     }
    },
    "c2f5d7804bce46af81dad2129baf5a01": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c2f9d9cbd9b648fdaa533005e0231538": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c895eb1145aa41e2b0dc4e7862c8e1ad": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c9195c4996084510ac2baeffc3958673": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_bedc55a741994190afdde78a0b6952ce",
      "placeholder": "​",
      "style": "IPY_MODEL_790165ff4f0046448b17bd3505cbc416",
      "value": " 265/265 [00:00&lt;00:00, 26.3kB/s]"
     }
    },
    "ca9d082a491b499c93fc044ea69151e5": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "cc126f714dd0422fadec2262b9818560": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "cc2b6ccbb4044f499b3616dbb3704275": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_44aed22fadf340babe47e18cc3609603",
      "max": 2776833,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c2f9d9cbd9b648fdaa533005e0231538",
      "value": 2776833
     }
    },
    "cc5e0350a895469b8907801d2ddfc116": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "cd5e8b1e84c74e0e959bffb5c75abf50": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "cda22ce77643405596be676b2eb35c80": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_e72ddbfb5d9b4b86830a77498594da7c",
      "max": 265,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_fad3f711763a45efa87750a5a978395f",
      "value": 265
     }
    },
    "cfb8e59c6bdd4e84b24507aa86db8eed": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "d052810c41e843bb8e63ed650fc72dbb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_025ae279fcb74246b9bfb3bfd923904c",
      "max": 7031863,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_0431e31bf3ea4e0d80eaef4db8311bd6",
      "value": 7031863
     }
    },
    "d68c4628980a462c9b5dad58c54d9fbf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_52a12ec9d90444f182a329c34feb9e29",
      "max": 613,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f50500601bc94cdeb200a0d3b3c80a95",
      "value": 613
     }
    },
    "d712e72eebf14a23a5c321795d0a4d19": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "d9288dbb67ca47d29fe3d188e11ca3d0": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "de7962e4c6a04f839a98fd8317ca26d7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e1a8bf02391b48efa942016ec7bebc6d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "danger",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_10a81cd2eab6441a872147db79f7ef1d",
      "max": 3087467144,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_3671f2e22aac43edadd1240a1e1deeea",
      "value": 3087466850
     }
    },
    "e3523f3c07f64fc88dacd72ac2ca1d3b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e3659031c23d4bcb8136899c476e1a6c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_6091d60224314261a301664d0362822a",
      "placeholder": "​",
      "style": "IPY_MODEL_5701898928264a458c89f2c8a080e83a",
      "value": "model.safetensors: 100%"
     }
    },
    "e52f671db0794a548ae77ad06b5134b6": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e545856974b842b3ad9d76508a9e9fcd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e5c600ca83f345b7bb6550bd6f25bc2c": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_051169313068408a9aee6ae705be5d72",
       "IPY_MODEL_2ec34140efa84ca29135afa6b4aa475f",
       "IPY_MODEL_6ae2bcda9b1540bfae0b7c182e60b2c7"
      ],
      "layout": "IPY_MODEL_0ad2ded850b542f5802ade7571301c3b"
     }
    },
    "e640358764354406b64ea9d8cd62b97c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e6ebb4fdfb2c43a5a3e7df423112cd46": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e718ccda074f49e1a488d71fd5c8f71c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e72ddbfb5d9b4b86830a77498594da7c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "e8ab843c82c34379b3f7c0edf8fa98ba": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "e92bfb506b4744c08f40d33962e7c856": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "e9b5c45236e94e3480dd6dbbb3d6fcf2": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ea1e5a33362a43db8766cb0c08b578dd": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "ed299eeae37b44afa7f2c605a93199e4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "ee6aa8e7f0ce4a31981d8e7f751a8c03": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_34852aab3a4441b88dd65be909a7673b",
       "IPY_MODEL_be0a1fb6e452464fbca63cba9a005b2b",
       "IPY_MODEL_a9222c840014441d9199ddf2b7650d08"
      ],
      "layout": "IPY_MODEL_e6ebb4fdfb2c43a5a3e7df423112cd46"
     }
    },
    "eff94aaebf5e45479fabd5b11c156291": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "f13f684bf6224980830986ed0a81e85a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "f1edfa6acde44acca81dc5cac5543ab8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "f2ae3349b890487abee3a557b186294e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "f50500601bc94cdeb200a0d3b3c80a95": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "f73f20e93f8a4763bd105d3dc8f61daf": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "fa6a56bbe82f412d8eff4968cddff88e": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "fad3f711763a45efa87750a5a978395f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "fc9ad241d66b4cb380183a04fc2e6c2f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "fefd0ef6800c4a8aa57e22d3681fa324": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_49eb1b29c8064d3baf42e78cd9305b73",
      "max": 2776833,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_f73f20e93f8a4763bd105d3dc8f61daf",
      "value": 2776833
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
